A programmable logic device (PLD), such as a field programmable gate array (FPGA), includes logic that can be programmed as needed to set the functionality of the device. A typical FPGA includes logic blocks, row and column interconnects, and input/output (I/O) elements. The logic blocks include programmable circuitry that is programmed to perform certain functions. Some FPGAs also include blocks of random access memory (RAM) that are provided for the sole purpose of memory. Other FPGAs include embedded array blocks (EABs) that include flexible blocks of circuits that can be programmed as memory and/or functional logic.
The programmed logic of an FPGA resides in the logic blocks. Even in FPGAs that include an embedded array block, logic is programmed by default into the logic blocks unless specifically directed to an embedded array block.
FPGAs can be programmed to perform many different functions. A common function that is used in communications applications is 8B/10B encoding/decoding. In FPGAs with embedded array blocks, the logic for an 8B/10B encoder/decoder is programmed by default into the logic blocks. Although an FPGA is able to accommodate an 8B/10B encoder/decoder in the logic blocks, once the resources of an FPGA are fully utilized, additional PLDs must be added to support any additional functionality.